const express = require('express');
const router = express.Router();
//导入jwt
const jwt = require('jsonwebtoken')
//导入moment
const moment = require('moment');
const AccountModel = require('../../models/AccountModel')
//导入中间件
const checkTokenMiddleware = require('../../middlewares/checkTokenMiddleware')

//记账本的列表
router.get('/account', checkTokenMiddleware,function (req, res, next) {
  console.log(req.user);
  //读取集合信息
  AccountModel.find().sort({ time: -1 }).exec().then(data => {
    //响应成功的提示
    res.json({
      //响应编号
      code: '1000',
      //响应的信息
      msg: '读取成功',
      //响应的数据
      data: data
    })
  }).catch(err => {
    res.json({
      code: '1001',
      msg: '读取失败',
      data: null
    })
    return;
  })
});


//新增记录
router.post('/account',checkTokenMiddleware, (req, res) => {
  //查看表单数据  2025-08-12 => new Date()
  // 2025-08-12 => moment =>new Date()
  //插入数据库
  AccountModel.create({
    ...req.body,
    //修改time属性的值
    time: moment(req.body.time).toDate()
  }).then(data => {
    //成功提醒
    res.json({
      code: '10000',
      msg: '创建成功',
      data: data
    })
  }).catch(err => {
    res.json({
      code: '1002',
      msg: "创建失败",
      data: null
    })
    return;
  })

});

//删除记录
router.delete('/account/:id', checkTokenMiddleware,(req, res) => {
  //获取 params 的 id 参数
  let id = req.params.id;
  //删除
  AccountModel.deleteOne({ _id: id }).then(data => {
    //提醒
    res.json({
      code: '1000',
      msg: '删除成功',
      data: data
    })
  }).catch(err => {
    res.json({
      code: '1003',
      msg: '删除失败',
      data: null
    })
    return;
  })
});

//获取单个账单信息
router.get('/account/:id', checkTokenMiddleware,(req, res) => {
  //获取 id 参数
  let { id } = req.params;
  //查询数据库
  AccountModel.findById(id).then(data => {
    res.json({
      code: '1000',
      msg: '读取成功',
      data: data
    })
  }).catch(err => {
    return res.json({
      code: '1004',
      msg: '读取失败',
      data: null
    })
  })
})

//更新单个的账单信息
// 更新单个账单信息（使用Promise重构，避免回调地狱）
router.patch('/account/:id',checkTokenMiddleware, (req, res) => {
  // 获取 id 参数值
  const { id } = req.params;

  // 使用Promise链式调用
  AccountModel.updateOne({ _id: id }, req.body)
    .then(() => {
      // 更新成功后，查询最新数据
      return AccountModel.findById(id);
    })
    .then(data => {
      // 成功响应最新数据
      res.json({
        code: '0000',
        msg: '更新成功',
        data: data
      });
    })
    .catch(err => {
      // 统一错误处理
      console.error('更新账单失败:', err);
      res.json({
        code: '1005',
        msg: '更新失败',
        data: null
      });
    });
});


module.exports = router;
